package com.campusbackend.entity.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 学生信息综合VO（包含基本信息、队伍信息、技能信息）
 * </p>
 *
 * @author yezi
 * @since 2025-08-01
 */
@Data
@Schema(name = "StudentInfoVO", description = "学生信息综合VO")
public class StudentInfoVO {

    @Schema(description = "学生ID")
    private Long studentId;

    @Schema(description = "学号")
    private String studentNumber;

    @Schema(description = "学生姓名")
    private String studentName;

    @Schema(description = "学院")
    private String college;

    @Schema(description = "年龄")
    private Integer age;

    @Schema(description = "邮箱")
    private String email;

    @Schema(description = "手机号")
    private String phone;

    @Schema(description = "头像URL")
    private String avatar;

    @Schema(description = "所属队伍列表")
    private List<TeamSimpleInfo> teams;

    @Schema(description = "技能特长列表")
    private List<SkillSimpleInfo> skills;

    @Schema(description = "队伍数量")
    private Integer teamCount;

    @Schema(description = "技能数量")
    private Integer skillCount;

    /**
     * 简化的队伍信息
     */
    @Data
    @Schema(name = "TeamSimpleInfo", description = "简化的队伍信息")
    public static class TeamSimpleInfo {

        @Schema(description = "队伍ID")
        private Long teamId;

        @Schema(description = "队伍名称")
        private String teamName;

        @Schema(description = "队伍编号")
        private String teamCode;

        @Schema(description = "队伍类型")
        private String teamType;

        @Schema(description = "在队伍中的角色")
        private String memberRole;

        @Schema(description = "指导老师姓名")
        private String instructorName;

        @Schema(description = "当前成员数量")
        private Integer currentMembers;

        @Schema(description = "最大成员数量")
        private Integer maxMembers;

        @Schema(description = "加入时间")
        private LocalDateTime joinTime;

        @Schema(description = "队伍状态：1-正常，0-解散")
        private Byte status;
    }

    /**
     * 简化的技能信息
     */
    @Data
    @Schema(name = "SkillSimpleInfo", description = "简化的技能信息")
    public static class SkillSimpleInfo {

        @Schema(description = "技能ID")
        private Long skillId;

        @Schema(description = "技能名称")
        private String skillName;

        @Schema(description = "技能分类")
        private String skillCategory;

        @Schema(description = "技能描述")
        private String description;

        @Schema(description = "熟练程度：1-初级，2-中级，3-高级")
        private Byte proficiencyLevel;

        @Schema(description = "熟练程度描述")
        private String proficiencyLevelDesc;

        @Schema(description = "掌握时间")
        private LocalDateTime createTime;
    }
}